#! /usr/bin/env python
# -*- coding:utf-8 -*-
# Author Jmz

str = 'jmz123jlyhah'

# # 必须掌握
# print(str[4])   # 返回4下标
# print(str[-2])    # -2下标
# print(str[222])    # 保错，超出下标
#
# print(str[2:])  # 切片返回下标2之后的所有
# print(str[-2:])   # 从-2下标至最后
# print(str[-2::-1])  # 反向不长为-1  也就是从下标-2 一直倒序取到最后
#
# print(len(str))   # 内置函数len 取 字符串的长度
# print(not str)   # 任何数据类型都自带boolean 类型， 有为真无为假
#
# for s in str:
#     print(s)


#字符串对象的方法
# 优先掌握
# strip(去除两边的指定字符)  lstrip(去除左边的指定字符)   rstrip(去除右边的指定字符)
# print(str.strip('h'))  # 去除左右两边的'h'  ，不填写则默认去除两边的' '字符
# print('   aaa   '.strip())

# lower(转小写方法)  upper(转大写方法)
# print('ASS'.lower())   # 返回小写
# print('aaa'.upper())   # 返回大写

# print(str.startswith('jmz'))   # 判断是否已'jmz'开头
# print(str.endswith('ah'))      # 判断是否已'ah'结尾

# format 三种玩法
# print('{} {} {}'.format('jmz',18,'man'))
# print('{1}{0}{1}'.format('jmz','---'))
# print('{name} {age} {name}-{sex}'.format(name='jmz',age=18,sex='man'))
'''
jmz 18 man
---jmz---
jmz 18 jmz-man
'''

# split rsplit
# print('jmz 18 man'.split())   # split 已什么方式分割字符串 并转成列表  默认从左切割，一直切到最后
# print('jmz 18 man'.rsplit( 'm',1))   # split 已什么方式分割字符串 并转成 列表， 从右切割，只切一次

# 将 列表类型装字符串类型
# print(''.join(['jmz','18', 'man']))  # 可迭代对象必须都是字符串

# print('this is a world'.replace('a','a beatiful',1))   # replace(self,old,new,count) 旧的字符转新字符，count 换几个
# 没有找到就旧字符就不转换

# isdigit
# print('111'.isdigit())  # True
# print('111a'.isdigit())  # Flase


# 了解
# find rfind index rindex count
# print('shanghai shi yi ge hao di fan'.find('q',2,10))    # 找到 放回下标 ，没找到返回 -1
# print('shanghai shi yi ge hao di fan'.rfind('f'))    # 从右开始找 找到 放回下标 ，没找到返回 -1
# print('shanghai shi yi ge hao di fan'.index('q'))    # 有则返回下标 没找到则报错
# print('shanghai shi yi ge hao di fan'.index('q'))    # 有则返回下标 没找到则报错
# print('shanghai shi yi ge hao di fan'.rindex('f'))    # 从右开始  有则返回下标 没找到则报错
# print('shanghai shi yi ge hao di fan'.count('q'))    # 返回字符串的个数

# center,ljust,rjust,zfill
# print('jmz'.center(20,'-'))  # 共20个字符空间，'jmz' 居中。  如果'jmz'字符个数大于给定的字符个数则只显示jmz
# --------jmz---------

# name='egon\thello\tnight'  # \t 表示一个tab的缩进
# print(name)
# print(name.expandtabs(0))   # str.expandtabs(tabsize=8)  tabsize 表示代表几个字符，默认8个字符


# print('jmz is beatiful'.capitalize())   # 语句开头字母转大写
# Jmz is beatiful
# print('jmz IS Beatiful'.swapcase())   # 字母大小写反转
#JMZ is bEATIFUL
# print('jmz is beatiful'.title())    # 每一个单词的开头都是大写
#Jmz Is Beatiful



# is 数字系列
# isdigit isnumeric isdecimal
num1 = b'4' # bytes ascii
num2 = u'4' # unicode python3 默认unicode
num3 = '四'
num4 = 'Ⅳ'
# isdigit  只对unicode  和bytes  有用
# print(num1.isdigit())  # True
# print(num2.isdigit())  # True
# print(num3.isdigit())  # False
# print(num4.isdigit())  # False

# isnumeric 最松的了，是个数学有关的数字就可以了(byte除外) 能够识别除bytes 意外的类型
# # print(num1.isnumeric())  # 报错
# print(num2.isnumeric())  # True
# print(num3.isnumeric())  # True
# print(num4.isnumeric())  # True

# isdecimal 最严格 只对unicode 有效
# # print(num1.isdecimal())  # 报错
# print(num2.isdecimal())  # True
# print(num3.isdecimal())  # False
# print(num4.isdecimal())  # False


# is其他系列
# name = 'jmz'
# print(name.isalpha())   # 是否由字母组成
# print(name.isalnum())   # 是否由字母或数字组成
# name = 'Jmz Is Cool'
# print('dobi_123'.isidentifier()) # 判断是否为Python中的标识符  合法的变量名+关键字
# print(name.islower())  # 是否是小写
# print(name.isupper()) # 是否都大写
# print(name.isspace()) # 检测字符串是否由空格组成
# print('     '.isspace()) # True
# print(name.istitle())  # 是否 单词开头大写



# 练习

# # 写代码,有如下变量,请按照要求实现每个功能 （共6分，每小题各0.5分）
# name = " aleX"
# # 1)    移除 name 变量对应的值两边的空格,并输出处理结果
# name.strip()
# # 2)    判断 name 变量对应的值是否以 "al" 开头,并输出结果 
# name.startswith('al')
# # 3)    判断 name 变量对应的值是否以 "X" 结尾,并输出结果 
# name.endswith('X')
# # 4)    将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
# name.replace('l','p')
# # 5)    将 name 变量对应的值根据 “l” 分割,并输出结果。
# name.split('l')
# # 6)    将 name 变量对应的值变大写,并输出结果 
# name.upper()
# # 7)    将 name 变量对应的值变小写,并输出结果 
# name.lower()
# # 8)    请输出 name 变量对应的值的第 2 个字符?
# print(name[1])
# # 9)    请输出 name 变量对应的值的前 3 个字符?
# print(name[:3])
# # 10)    请输出 name 变量对应的值的后 2 个字符? 
# print(name[-2:])
# # 11)    请输出 name 变量对应的值中 “e” 所在索引位置? 
# print(name.find('e'))  # 不报错
# # 12)    获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
# print(name[:-1])